package com.oig.sys.workflow.controller;


import com.oig.common.validator.GroupAdd;
import com.oig.sys.workflow.app.IAppAuditCallOptService;
import com.oig.sys.workflow.dto.AuditCallMsgDto;
import io.swagger.v3.oas.annotations.Hidden;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 审计消息，触发自动化处理
 *
 * 考虑要不要配置忽略授权？
 */
@Hidden
@RestController
@RequestMapping("/auditCall")
@Slf4j
@RequiredArgsConstructor
public class AuditCallController {

    private final IAppAuditCallOptService appAuditCallOptService;

    /**
     * 收到消息后
     * 根据监听对象，及操作，查询配置表，
     * 如果有自动化配置，再判断有没有配置数据条件，有就匹配数据，如果能匹配上，记入执行日志，触发操作
     * 执行安排任务时：
     * 1、任务内容，怎么增加跳转到具体操作？ 配置里配置么？
     * 2、任务怎么自动完成呢？
     */
    @PostMapping(value = "/rec")
    public void rec(@RequestBody @Validated({GroupAdd.class}) AuditCallMsgDto auditCallMsgDto){
        log.info("audit call msg:{}", auditCallMsgDto);
        if (auditCallMsgDto.getTenantId()==null){   //TODO 待处理
            log.warn("数据所属租户没有，不能触发自动化");
            return;
        }
        this.appAuditCallOptService.dealAuditCall(auditCallMsgDto);
    }




}
